home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / machack / Hacks97 / VerticalHold.sit / Vertical Hold / source code / MungePlug.cpp < prev    next >
C/C++ Source or Header  |  1997-06-27  |  2KB  |  81 lines

  1. #include <LowMem.h>
  2. #include <A4Stuff.h>
  3. #include <QuickDraw.h>
  4. #include <Memory.h>
  5. #include <Resources.h>
  6. #include <Fonts.h>
  7. #include <Dialogs.h>
  8. #include <QDOffscreen.h>
  9. #include <string.h>
  10. #include <stdio.h>
  11. #include <Timer.h>
  12.  
  13. int mungePos = 0;
  14. int mungeVal[100] =
  15. {
  16.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17.     21, -15, 17, 18, -12, -16, 0, 0, 0, 0,
  18.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19.     21, -15, 17, 18, -12, -16, 0, 0, 0, 0,
  20.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22.     0, 0, 0, 0, -16, -12, 18, 17, -15, 21,
  23.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  24.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  25.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  26. };
  27.  
  28. void initMungePlug()
  29. {
  30. }
  31.  
  32. void disposeMungePlug()
  33. {
  34. }
  35.  
  36. typedef struct {
  37.     TMTask            task;
  38.     Ptr                mainBaseAddr;
  39.     Size            worldBytes;
  40.     Ptr                worldBuffer;
  41.     short            rowBytes;
  42.     short            phase;
  43.     Rect            size;
  44.     short            offset;
  45. } MyTaskRec;
  46.  
  47. void doMungePlug(MyTaskRec* myTask)
  48. {
  49.     EnterCodeResource ();
  50.     short            height = myTask -> size.bottom - myTask -> size.top;
  51.     short            phase = myTask -> phase;
  52.     short            rowBytes = myTask -> rowBytes;
  53.     Ptr                worldBuffer = myTask -> worldBuffer;
  54.     Ptr                screenBuffer = myTask -> mainBaseAddr;
  55.  
  56.     mungePos++;
  57.     if(mungePos > 99)
  58.         mungePos = 0;
  59.     
  60.     int i;
  61.     for(i = 0; i < height; i++)
  62.     {
  63.         long offset = mungeVal[(mungePos + i) % 100];
  64.         
  65.         if(offset > 0)
  66.         {
  67.             ::BlockMoveData (worldBuffer + i * rowBytes,
  68.                         screenBuffer + i * rowBytes + offset,
  69.                         rowBytes);
  70.         }
  71.         else
  72.         {
  73.             ::BlockMoveData (worldBuffer + i * rowBytes - offset,
  74.                         screenBuffer + i * rowBytes,
  75.                         rowBytes);
  76.         }
  77.     }
  78.     ExitCodeResource ();
  79. }
  80.  
  81.